# 微博历史热搜，每天的数据以套娃形式被保存在三级目录下，并且热搜是以markdown文件存储
# # 热搜数据/01月/01日/2020年01月01日23点.md
#
# # 2020年01月01日23点数据
# # 1、快本为何炅改播出时间
# # 微博当时热度为： 7152844
# #
# # 2、橘子洲烟花
# # 微博当时热度为： 3595375
#
# # 整理一个三列表格： 时间 热搜  热度
#

import os
import re
import pandas as pd
from pathlib import Path

path = os.getcwd() + '/热搜数据/'
# 初始化构造Path对象
p = Path(path)
# 得到所有的markdown文件
FileList = list(p.glob("**/*.md"))
# 去重，每天保留一条数据
filelist = list(filter(lambda x: str(x).find("23点") >= 0, FileList))

df = pd.DataFrame(columns=['时间', '热搜', '热度'])
for file in filelist:
    with open(file, encoding='utf-8') as f:
        lines = f.readlines()
        # 去除空格
        lines = [i.strip() for i in lines]
        # 去除无关字符如\n
        data = list(filter(None, lines))
        # 去除第一行标题
        del data[0]
        data = data[0:100]
        # 奇偶分割出内容和排名
        content = data[::2]
        rank = data[1::2]
        # 逐项格式化内容和排名
        for i in range(len(content)):
            content[i] = re.findall('、(.+)', content[i])[0]
        for i in range(len(rank)):
            rank[i] = re.findall(' (.+)', rank[i])[0]
        print(content)
        print(rank)
        # 从文件名提出月日
        date = re.findall('年(.+)2', str(file))[0]
        print(date)

        # 填充到表格中
        myDict = {'热搜': content, '热度': rank}
        df1 = pd.DataFrame(myDict)
        df1.insert(0, '时间', date)
        df = df.append(df1)
# 排序和
df = df.sort_values(by='时间', ascending=True).reset_index(drop=True)
# 生成excel
df.to_excel('热搜数据.xlsx')
print('文件已经生成')
